// a 分类模块

// todo导入存储的分类数据 和request请求获取分类数据的函数
import { topCategory } from '@/api/constants'
import { findAllCategory } from '@/api/category'

export default {
    namespaced: true,
    state() {
        return {
            // 分类信息集合
            //*list: [] //如果默认是空数组的话看不见默认的9个分类 等数据加载完毕才会显示 会出现白屏
            //* 根据导入的默认常量数据来生成一个默认的顶级分类数据，不会出现空白（没数据的情况）
            list: topCategory.map(item => ({ name: item }))
        }
    },
    // * 加载数据成功以后需要修改list
    mutations: {
        // payload是所有的分类集合
        setList(state, payload) {
            state.list = payload
        },
        //* 修改open 控制二级类目显示与隐藏的函数
        show(state, id) {
            const currentCategory = state.list.find(item => item.id === id)
            currentCategory.open = true
        },
        hide(state, id) {
            const currentCategory = state.list.find(item => item.id === id)
            currentCategory.open = false
        }
    },
    // *需要向后台加载数据，所以需要actions函数获取数据
    actions: {
        // *获取分类数据 commit为解构出来的context.commit
        async getList({ commit }) {
            const data = await findAllCategory()
            //* 遍历data 然后给每一个分类加一个open来控制显示与隐藏
            data.result.forEach(top => {
                top.open = false
            });
            // 获取数据成功，提交mutations进行修改数据
            commit('setList', data.result)
        }
    }

}